General-purpose computing on graphics processing units (GPGPU) is the technique of using a graphics processing unit (GPU), which typically handles computations only for computer graphics, to perform computations for applications traditionally handled by the CPU. GPUs are increasingly being used for general purpose computing. GPUs are well suited for throughput-oriented workloads with abundant parallelism such as task parallel (coarse grained) or data parallel (fine grained) computing. By contrast, CPUs are better suited for applications that are latency-sensitive and have implicit instruction-level parallelism.
One particular example that may benefit from GPGPU is RSA processing. RSA is an algorithm for public-key cryptography. The acronym RSA stands for Rivest, Shamir, and Adleman who were the individuals to first publicly describe the algorithm. RSA encryption and decryption is a computationally expensive algorithm. More research efforts are focusing on accelerating RSA decryptions because decryption is significantly more expensive computationally than encryption. The best CPU implementations of RSA decryption on the latest CPU still cost about 0.7 million cycles. Offloading such an expensive operation to the GPU can increase efficiency and free the CPU for other tasks. However, straightforward porting of a CPU RSA implementation to a GPU would lead to poor performance without utilizing the parallel processing power of the GPU. Accordingly, there may be a need for improved techniques to solve these and other problems.